 /* This header can be read by both C and C++ compilers */
 #ifndef __CPPTUTORMIXING_C_CPP_COMMON_H__
 #define __CPPTUTORMIXING_C_CPP_COMMON_H__
 
 #ifdef __cplusplus
    class Fred 
    {
        public:
            Fred();
            void wilma(int);
        private:
        int a_;
    };
 #else
    typedef struct Fred Fred;
 #endif //__cplusplus
 
 #ifdef __cplusplus
 extern "C" 
 {
 #endif
 
 #if defined(__STDC__) || defined(__cplusplus)
    extern void c_function(Fred*);   /* ANSI C prototypes */
    extern Fred* cplusplus_callback_function(Fred*);
 #else
    extern void c_function();        /* K&R style */
    extern Fred* cplusplus_callback_function();
 #endif //__cplusplus
 
 #ifdef __cplusplus
 }
 #endif //__cplusplus

 #endif // __CPPTUTORMIXING_C_CPP_COMMON_H__ 
 